package cn.net.udp;

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

/**
 * 基本类型：发送端
 * 1、使用DategramSocket指定端口，创建发送端
 * 2、准备数据，将基本类型数据  转成字节数组
 * 3、封装DatagramPacket包裹，一定要指定目的地
 * 4、发送包裹send(DatagramPacket p)
 * 5、释放资源
 * @author 67038
 *
 */
public class UdpTypeClient {
	public static void main(String[] args) throws IOException {
		System.out.println("发送端启动中……");
		//1、使用DategramSocket指定端口，创建发送端
		DatagramSocket client = new DatagramSocket(8888);
		//2、准备数据 一定转成字节数组
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(baos));
		dos.writeChar('a');
		dos.writeInt(10);
		dos.writeDouble(Math.random());
		dos.writeBoolean(true);
		dos.writeUTF("北京尚学堂");
		//手动刷新缓冲区：将流中数据写入到文件中
		dos.flush();

		byte[] datas = baos.toByteArray();
		//3、封装DatagramPacket包裹，一定要指定目的地
		DatagramPacket p = new DatagramPacket(datas, 0, datas.length, 
				new InetSocketAddress("localhost", 9999));
		//4、发送包裹send(DatagramPacket p)
		client.send(p);
		//5、释放资源
		client.close();
	}
}
